#ifndef __M_MSG_H__
#define __M_MSG_H__

#include "util.hpp"
#include "level.hpp"
#include <thread>
#include <memory>

namespace maglog {

// 日志消息结构体，用于存储日志的相关信息
struct LogMsg {
    using ptr = std::shared_ptr<LogMsg>;

    size_t _line;                // 行号
    size_t _ctime;               // 时间戳
    std::thread::id _tid;        // 线程ID
    std::string _name;           // 日志器名称
    std::string _file;           // 文件名
    std::string _payload;        // 日志消息内容
    LogLevel::value _level;      // 日志等级

    // 构造函数，初始化日志消息的各项属性
    LogMsg(std::string &name, std::string file, size_t line, std::string &&payload, 
           LogLevel::value level)
        : _name(name), _file(file), _payload(std::move(payload)), _level(level),
          _line(line), _ctime(util::date::now()), _tid(std::this_thread::get_id()) {
    }

    //~LogMsg() { }  // 析构函数，默认操作
};

} // namespace maglog

#endif // __M_MSG_H__
